package com.hspedu.draw;

import javax.swing.*;
import java.awt.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2023-07-22
 * Time: 16:38
 */
public class DrawCircle extends JFrame{//首先要继承JFame类窗口（画框），然后才能使用画板，画笔
    //定义一个面板
    private  MyPanel mp =null;

    public DrawCircle() {
        //初始化面板
        mp = new MyPanel();
        //把面板放入窗口（画框）
        this.add(mp);
        //设置窗口大小
        this.setSize(400, 300);
        this.setVisible(true);//可以显示
        //当点击窗口的红X，程序真正退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new DrawCircle();
        System.out.println("假退出");
    }
}


//1. 先定义一个面板MyPanel，继承一个JPanel类
class MyPanel extends JPanel {

    /**
     * MyPanel 对象就是一个画板
     * Graphics 是一支画笔，它提供了很多的绘图方法
     * @param g  the <code>Graphics</code> context in which to paint
     *
     *paint(Graphics g) 绘制组件的外观
     *当组件第一次在屏幕上显示的时候，程序会自动的调用paint()方法来绘制组件
     *           同时在以下情况paint()也会被调用：
     *           1. 窗口最小化吗，再最大化（鼠标完成）
     *           2. 窗口的大小发生白变化（鼠标完成）
     *           3. repaint()方法被调用
     */
    @Override
    public void paint(Graphics g) {//绘图方法
        System.out.println("paint被调用了");
        super.paint(g);//调用父类的方法完成初始化
        //画出一个圆形边框
        g.drawOval(10, 10, 100, 100);

        //绘制不同的图行
        //画直线 前起点，后终点
        g.drawLine(10, 10, 100, 100);
        //画矩形边框, 前左上角，后右下角
        g.drawRect(10, 10, 100, 100);
        //填充矩形/椭圆fillOval
        //先设置颜色
        g.setColor(Color.blue);
        g.fillRect(10, 10, 100, 100);


        //画图片
        //1.获取图片资源,/SGhjkl.png表示在该项目的根目录去获取图片资源
        Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/SGhjkl.png"));
        g.drawImage(image, 10, 10, 840, 859, this);
        //画字符串
        //先设置颜色 字体
        g.setColor(Color.red);
        g.setFont(new Font("隶书", Font.BOLD, 50));
        g.drawString("你好，世界", 100, 100);//x，y对应'你'的左下角
    }
}